package cc.owoo.godpen.reflect;

import java.lang.reflect.InvocationTargetException;

/**
 * 值设置
 * Created by nimensei
 * 2022-05-16 上午 10:25
 **/
public interface ValueSet {
    /**
    * 设置对象的值，值会自动进行转换，如果值转换失败则会返回false
     *
     * @param object 需要被设置值的对象
     * @param value  需要设置的值
     * @return 是否设置成功
     * @throws IllegalAccessException    设置值时发生了异常，需要检查传入的对象是否具有这个字段，或是值是否能够被转换
     * @throws InvocationTargetException 函数通过反射调用时发生了异常，请检查传入的对象是否具有这个函数，或是函数的值是否能够被转换
     */
    boolean set(Object object, Object value) throws IllegalAccessException, InvocationTargetException;

    /**
     * 对已有的值填充新的值，简言之就是合并新旧两个值
     *
     * @param object 需要被填充数据的对象
     * @param value  需要填充的值
     * @return 是否填充成功
     * @throws IllegalAccessException    设置值时发生了异常，需要检查传入的对象是否具有这个字段，或是值是否能够被转换
     * @throws InvocationTargetException 函数通过反射调用时发生了异常，请检查传入的对象是否具有这个函数，或是函数的值是否能够被转换
     */
    boolean fill(Object object, Object value) throws IllegalAccessException, InvocationTargetException;
}
